#ifndef NET_INTERFACE_H
#define NET_INTERFACE_H

#include <stdint.h>
#include <stddef.h>

// 网络数据包结构
typedef struct {
    uint32_t src_ip;       // 源IP地址
    uint32_t dest_ip;      // 目标IP地址
    uint8_t protocol;      // 协议类型
    size_t data_len;       // 数据长度
    void *data;            // 数据指针
} net_packet_t;

// 协议类型定义
typedef enum {
    PROTOCOL_AODV = 0x01,  // AODV控制协议
    PROTOCOL_DATA = 0x02   // 数据传输协议
} protocol_type_t;

// 网络接口初始化
extern int net_interface_init(uint32_t my_ip);

// 网络接口清理
extern void net_interface_cleanup(void);

// 发送数据包
extern int net_interface_send(uint32_t dest_ip, uint8_t protocol, const void *data, size_t data_len);

// 广播数据包
extern int net_interface_broadcast(uint8_t protocol, const void *data, size_t data_len);

// 接收数据包处理回调函数类型
typedef int (*packet_receive_callback_t)(uint32_t src_ip, uint8_t protocol, const void *data, size_t data_len);

// 设置数据包接收回调函数
extern void net_interface_set_receive_callback(packet_receive_callback_t callback);

// 获取本地IP地址
extern uint32_t net_interface_get_my_ip(void);

// 模拟网络发送（用于测试）
extern int net_interface_simulate_receive(uint32_t src_ip, uint8_t protocol, const void *data, size_t data_len);

#endif /* NET_INTERFACE_H */